package com.onlineMIS.common;

import java.util.regex.Pattern;

/**
 * @Author charles.yao
 * @Description 字符串判断工具类
 * @Date 2024/10/29 14:22
 */
public class StrCheckUtils {
    //纯汉字
    private static final Pattern CHINESE_PATTERN = Pattern.compile("[\\u4e00-\\u9fa5]+");
    //纯数字
    private static final Pattern NUMBER_PATTERN = Pattern.compile("[0-9]+");
    //包含数字
    private static final Pattern CONTAIN_NUMBER_PATTERN = Pattern.compile(".*[0-9].*");
    //纯字母
    private static final Pattern LETTER_PATTERN = Pattern.compile("[a-zA-Z]+");
    //包含字母
    private static final Pattern CONTAIN_LETTER_PATTERN = Pattern.compile(".*[a-zA-z].*");
    //特殊字符
    private static final Pattern SPECIAL_CHARACTER_PATTERN = Pattern.compile("[[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“'。，、？]|\\n|\\r|\\t]+");
    //包含特殊字符
    private static final Pattern CONTAIN_SPECIAL_CHARACTER_PATTERN = Pattern.compile(".*[[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“'。，、？]|\\n|\\r|\\t].*");
    //包含特殊字符
    private static final Pattern CONTAIN_SPECIAL_CHARACTER_PATTERN_TRANSFER = Pattern.compile(".*[[ _`~!@#$%^&*()+=|{}':;',\\[\\]<>/?~！@#￥%……&*（）——+|{}【】‘；：”“'。，、？]|\\n|\\r|\\t].*");
    //只有数字和字母
    private static final Pattern NUMBER_LETTER_PATTERN = Pattern.compile("[0-9a-zA-z]+");
    //包含数字和字母
    private static final Pattern CONTAIN_NUMBER_LETTER_PATTERN = Pattern.compile(".*[0-9a-zA-z].*");


    /**
     * 是否纯汉字
     *
     * @param str
     * @return
     */
    public static boolean isChinese(String str) {
        return CHINESE_PATTERN.matcher(str).matches();
    }

    /**
     * 是否纯数字
     *
     * @param str
     * @return
     */
    public static boolean isNumber(String str) {
        return NUMBER_PATTERN.matcher(str).matches();
    }

    /**
     * 是否包含字母
     *
     * @param str
     * @return
     */
    public static boolean isContainNumber(String str) {
        return CONTAIN_NUMBER_PATTERN.matcher(str).find();
    }

    /**
     * 是否是纯字母-不区分大小写
     *
     * @param str
     * @return
     */
    public static boolean isLetter(String str) {
        return LETTER_PATTERN.matcher(str).matches();
    }

    /**
     * 是否包含字母-不区分大小写
     *
     * @param str
     * @return
     */
    public static boolean isContainLetter(String str) {
        return CONTAIN_LETTER_PATTERN.matcher(str).find();
    }

    /**
     * 是否是特殊字符
     *
     * @param str 参数
     * @return boolean
     */
    public static boolean isSpecialCharacter(String str) {
        return SPECIAL_CHARACTER_PATTERN.matcher(str).matches();
    }
    /**
     * 是否包含特殊字符
     *
     * @param str 参数
     * @return boolean
     */
    public static boolean isContainSpecialCharacter(String str) {
        return CONTAIN_SPECIAL_CHARACTER_PATTERN.matcher(str).matches();
    }
    
    /**
     * 是否包含特殊字符（排除了"." 符号）；
     *
     * @param str 参数
     * @return boolean
     */
    public static boolean isContainSpecialCharacterTransfer(String str) {
        return CONTAIN_SPECIAL_CHARACTER_PATTERN_TRANSFER.matcher(str).matches();
    }

    /**
     * 是否只有数字和字母
     * @param str
     * @return
     */
    public static boolean isNumberAndLetter(String str) {
        return NUMBER_LETTER_PATTERN.matcher(str).matches();
    }
    /**
     * 是否包含数字和字母
     * @param str
     * @return
     */
    public static boolean isContainNumberAndLetter(String str) {
        return CONTAIN_NUMBER_LETTER_PATTERN.matcher(str).find();
    }
    
    
}

